viewport: Free gadgets in finalize
authorMatthias Clasen <mclasen@redhat.com>
Sun, 5 Jun 2016 23:36:36 +0000 (19:36 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 6 Jun 2016 00:00:43 +0000 (20:00 -0400)
This is the right place for this.

gtk/gtkviewport.c

index 088951487e5ca81ad3e313d769a9af083f42bf78..a5487ffc705f0ec5a5c8892a771641148ad811b4 100644 (file)
@@ -103,6 +103,7 @@ static void gtk_viewport_get_property             (GObject         *object,
                                                   guint            prop_id,
                                                   GValue          *value,
                                                   GParamSpec      *pspec);
+static void gtk_viewport_finalize                 (GObject         *object);
 static void gtk_viewport_destroy                  (GtkWidget        *widget);
 static void gtk_viewport_realize                  (GtkWidget        *widget);
 static void gtk_viewport_unrealize                (GtkWidget        *widget);
@@ -374,6 +375,7 @@ gtk_viewport_class_init (GtkViewportClass *class)
 
   gobject_class->set_property = gtk_viewport_set_property;
   gobject_class->get_property = gtk_viewport_get_property;
+  gobject_class->finalize = gtk_viewport_finalize;
 
   widget_class->destroy = gtk_viewport_destroy;
   widget_class->realize = gtk_viewport_realize;
@@ -575,13 +577,22 @@ gtk_viewport_destroy (GtkWidget *widget)
   viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL);
   viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL);
 
-  g_clear_object (&priv->gadget);
-
   GTK_WIDGET_CLASS (gtk_viewport_parent_class)->destroy (widget);
 
   g_clear_pointer (&priv->pixel_cache, _gtk_pixel_cache_free);
 }
 
+static void
+gtk_viewport_finalize (GObject *object)
+{
+  GtkViewport *viewport = GTK_VIEWPORT (object);
+  GtkViewportPrivate *priv = viewport->priv;
+
+  g_clear_object (&priv->gadget);
+
+  G_OBJECT_CLASS (gtk_viewport_parent_class)->finalize (object);
+}
+
 /**
  * gtk_viewport_get_hadjustment:
  * @viewport: a #GtkViewport.